package Entity;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;

/**
 * 礼物交易记录表实体类（对应gift_transaction表）
 * gift_value保证正数，sender_id支持大用户量（BigInteger）
 */
public class GiftTransaction {
    // 礼物ID（自增主键，非空）
    private Integer giftId;
    // 直播ID（非空，外键关联livestream.stream_id）
    private Integer streamId;
    // 送礼用户ID（可空，支持大用户量，用BigInteger适配）
    private BigInteger senderId;
    // 礼物类型（非空，最大50字符，如“小心心”“火箭”）
    private String giftType;
    // 礼物价值（非空，DECIMAL(8,2)，业务层保证正数）
    private BigDecimal giftValue;
    // 发送时间（非空，DATETIME类型）
    private Date sendTime;

    // 无参构造（必需）
    public GiftTransaction() {}

    // Getter/Setter
    public Integer getGiftId() {
        return giftId;
    }

    public void setGiftId(Integer giftId) {
        this.giftId = giftId;
    }

    public Integer getStreamId() {
        return streamId;
    }

    public void setStreamId(Integer streamId) {
        this.streamId = streamId;
    }

    public BigInteger getSenderId() {
        return senderId;
    }

    public void setSenderId(BigInteger senderId) {
        this.senderId = senderId;
    }

    public String getGiftType() {
        return giftType;
    }

    public void setGiftType(String giftType) {
        this.giftType = giftType;
    }

    public BigDecimal getGiftValue() {
        return giftValue;
    }

    public void setGiftValue(BigDecimal giftValue) {
        // 业务层保证正数，并强制2位小数（匹配DECIMAL(8,2)）
        if (giftValue == null) {
            throw new IllegalArgumentException("giftValue（礼物价值）不能为null");
        }
        if (giftValue.compareTo(BigDecimal.ZERO) <= 0) {
            throw new IllegalArgumentException("giftValue（礼物价值）必须为正数");
        }
        this.giftValue = giftValue.setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    public Date getSendTime() {
        return sendTime;
    }

    public void setSendTime(Date sendTime) {
        this.sendTime = sendTime;
    }

    // toString（调试用）
    @Override
    public String toString() {
        return "GiftTransaction{" +
                "giftId=" + giftId +
                ", streamId=" + streamId +
                ", senderId=" + senderId +
                ", giftType='" + giftType + '\'' +
                ", giftValue=" + giftValue +
                ", sendTime=" + sendTime +
                '}';
    }
}